/**
 * @file   1118.cpp
 * @author Shuang Hu <hsmath@ubuntu>
 * @date   Tue Jun  1 18:39:46 2021
 * 
 * @brief  PAT 1118
 * 
 * 
 */
#include<iostream>
#include<vector>
#include<map>
using namespace std;
int main(){
    map<int,int> idtogp;
    int photonum;
    cin>>photonum;
    int gpnum=0;
    for(int i=0;i<photonum;i++){
	vector<int> ids;
	int n;
	cin>>n;
	for(int j=0;j<n;j++){
	    int d;
	    cin>>d;
	    ids.push_back(d);
	}
	bool flag=false;
	int idsgp=0;
	for(int j=0;j<n;j++){
	    if(idtogp[ids[j]]!=0){
		idsgp=idtogp[ids[j]];
		flag=true;
		break;
	    }
	}
	if(flag==false){
	    gpnum++;
	    for(int j=0;j<n;j++){
		idtogp[ids[j]]=gpnum;
	    }
	}else{
	    for(int j=0;j<n;j++){
		idtogp[ids[j]]=idsgp;
	    }
	}
    }
    int datanum=0;
    for(auto it=idtogp.begin();it!=idtogp.end();it++){
	datanum++;
    }
    cout<<gpnum<<" "<<datanum<<endl;
    int checknum;
    cin>>checknum;
    for(int i=0;i<checknum;i++){
	int a,b;
	cin>>a>>b;
	if(idtogp[a]==idtogp[b]){
	    cout<<"Yes"<<endl;
	}else{
	    cout<<"No"<<endl;
	}
    }
}
